package com.youlu.campus.web.community.controller;

import com.youlu.campus.web.community.dto.*;
import com.youlu.campus.web.community.service.CommContentService;
import com.yuelin.infrastructure.quantum.common.QResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 社区动态内容API
 * @author: YangJ
 * @date: 2020/11/26 14:47
 */
@RestController
public class CommContentController {

    @Autowired
    private CommContentService commContentService;

    /**
     * 发布动态
     * 备注：社区模块发布动态
     * 参数：request - 发布动态请求类
     */
    @PostMapping("/mini-app/comm/content/create")
    public QResult create(@RequestBody CommContentRequest request){
        return QResult.success(commContentService.create(request));
    }

    /**
     * 动态详情
     * 备注：根据ID查询动态详情
     * 参数：id - 动态ID
     * 返回：200-请求成功，返回CommContentResponse类型结果
     */
    @GetMapping("/mini-app/comm/content/query")
    public QResult query(String id){
        return QResult.success(commContentService.query(id));
    }

    /**
     * 动态视频点击
     * 备注：动态视频点击
     * 参数：id - 动态ID
     */
    @GetMapping("/mini-app/comm/content/video/click")
    public QResult click(String id){
        return QResult.success(commContentService.click(id));
    }

    /**
     * 动态列表
     * 备注：社区首页-推荐动态；小组-小组动态；话题详情-话题动态；个人主页-我的动态
     * 参数：request - 动态查询请求类
     * 返回：200-请求成功，返回CommContentResponse类型结果
     */
    @PostMapping("/mini-app/comm/content/list")
    public QResult contentList(@RequestBody ContentQueryRequest request){
        return QResult.success(commContentService.contentList(request));
    }

    /**
     * 关注用户的动态列表
     * 备注：社区首页-关注用户动态
     * 参数：request - 动态查询请求类
     * 返回：200-请求成功，返回CommContentResponse类型结果
     */
    @PostMapping("/mini-app/comm/content/follow/list")
    public QResult contentFollowList(@RequestBody ContentQueryRequest request){
        return QResult.success(commContentService.contentFollowList(request));
    }

    /**
     * 动态删除
     * 备注：个人主页-我的动态-动态删除
     * 参数：id - 动态ID
     */
    @DeleteMapping("/mini-app/comm/content/delete")
    public QResult delete(String id){
        return QResult.success(commContentService.delete(id));
    }
}